Bar code symbologies ("bar codes") are widely used for data collection. The first bar code symbologies developed, such as U.P.C., EAN, Code 39, Interleaved 2 of 5, and Code 93 can be referred to as "linear symbologies" because data in a given symbol is decoded along one axis or direction. Linear symbologies generally encode data characters as parallel arrangements of alternating, multiple-width strips of lower reflectivity or "bars" separated by the absences of such strips having higher reflectivity or "spaces." Each unique pattern of bars and spaces within a predetermined width defines a particular data character. A given linear symbol encodes several data characters along its length as several groups of unique bar and space patterns.
Simpler linear symbologies such as Code 39 employ two element widths. An "element" is a single bar or a single space, and in 2-width symbologies, each character in the symbology generally includes a combination of tour narrow and wide elements: a single-width bar, a single-width space, a double-width bar or a double-width space. More complex symbologies employ a greater number of widths for each element. For example, the U.P.C. symbology employs four widths, this allowing for a combination of eight elements. Nevertheless, each linear symbology is based on its "X-dimension," which is the nominal width dimension of the narrowest bars and spaces in the bar code symbology. The wider bars and spaces in that symbology are based on integer multiples of the X-dimension. For example, the largest element in the U.P.C. symbology is four times wider than the narrowest element.
Currently available bar code readers transfer light to a bar code, which is reflected back to a light sensor within the reader. The sensor produces a profile based on the light reflected from the bar code. The bar code "profile" is generally an analog signal representing the modulated light reflected from the spaces and absorbed by the bars in the bar code and thereby represents the pattern of bars and spaces in a given bar code. In a given profile, a peak generally corresponds to a space (high reflectivity), while a valley corresponds to a bar (low reflectivity, relative to a space), and the width of each peak or valley generally indicates the width of the corresponding bar or space whose reflectance produced the peak or valley. Currently available readers determine the edges in the profile, typically using an electronic thresholding or other square-wave generating circuit that converts the profile into either a high or low value. The reader then decodes the "squared-off" signal based on the transitions or edges between high and low values.
Some bar code readers employ hand-held wands which contact the surface on which the bar code is printed. Such readers often produce profiles having sharp contrast between the peaks and valleys and thus the spaces and bars represented by the profile are easily detectable by circuitry in the reader. However, wand-type readers require the wand to contact the surface on which the bar code is printed, and are thus impractical in situations where a user cannot or does not wish to physically contact the bar code. In a hand-held reader, requiring the user to manually contact each bar code is time consuming and reduces productivity. Also, the X-dimension of each symbol must be matched to resolution of the wand (typically to an optical aperture in the wand).
Non-contact bar code readers are currently available such as laser scanning and image-based readers. Laser scanning-type readers employ a scanning beam of laser light which impinges on and is reflected from a bar code. A photodetector receives the reflected light and converts it into a modulated electrical signal that comprises the profile for the bar code. Image or vision-based readers employ charge-coupled devices ("CCD"), two-dimensional semiconductor arrays, vidicons, or other suitable light receiving elements that receive an image of a bar code and, based on the light reflected therefrom, process the image to produce a profile.
Due to optical systems inherent in laser- or image-type readers, these readers haze a specified depth-of-field within which bar codes can be read. Some laser- or image-type readers employ autofocus systems to increase the depth-of-field for the reader. However, even readers with autofocus systems are limited by the depth-of-field of the autofocus system. Additionally, autofocus systems are slow and costly.
If a reader scans or images a bar code out of its depth-of-field, the resulting profile will exhibit "closure." Positive ink spread in a bar code or excessive noise in a profile can also produce closure. Additionally, scanning or imaging bar codes with narrow elements that are too small for the resolution of the scanner/reader produces closure. Closure in a bar code profile is evidenced by some recognizable peaks and valleys, but also ripples in the middle of the profile. Closure in a bar code profile generally indicates that the wide elements in the profile are resolved, but that the narrow elements are unresolved. With respect to readers, a space or bar is "resolved" if the reader is able to identify a peak or valley in the profile that corresponds to the given space or bar. Some profiles may represent narrow elements by small peaks, valleys or ripples that are visually recognizable, but which are essentially undetectable by current readers.
Currently available readers are unable to decode profiles having closure. These readers employ electronic circuits such as thresholding circuits, or other methods, to find the edges of bar code elements represented in a profile. To decode each element in the bar code, these electronic circuits locate an edge of an element as a point where the reflectance in the profile reaches a fixed distance from a peak or valley. Currently available readers cannot decode profiles where the narrow elements are out of focus or lost in the profile (ie., "unresolved" profile or profile closure) because the narrow elements fail to produce any significant peaks or valleys and thus the electronic circuitry is unable to locate any edges in the profile corresponding to these elements. Since current electronic circuits cannot locate the narrow elements in a profile (when closure occurs), the circuits cannot decode the bar code.
Due to the shortcomings of such circuits, a user of a hand-held non-contact reader without autofocus must adjust the distance at which the user holds the reader from the bar code until the bar code is within the depth-of-field (i.e., in-focus) for the reader. Once in-focus, the circuitry can decode the bar code, but only if the symbol's size (X-dimension) is within the resolution of the reader. If a user is attempting to read bar codes at varying distances, the user must constantly move the reader to place a given bar code within focus for the reader so as to read that bar code. Consequently, while non-contact readers eliminate the need to contact the surface on which the bar codes is printed, reading each bar code is still time consuming since the user must move the reader to the particular in-focus position for the reader. If the reader is mounted in a fixed location (and lacks autofocus capabilities), and the bar codes pass by the reader at different distances, for example, when the reader is mounted above a conveyor on which boxes of varying heights are carried for reading bar codes atop the boxes, only those bar codes within the reader's fixed depth-of-field will be decoded.